package presentation;

import java.awt.Color;
import java.awt.Dimension;

import javax.swing.JPanel;

import solitaire.application.TasDeCartes;
import controle.CCarte;
import controle.CColonne;
import controle.ICTas;

public class PColonne extends JPanel implements IPTas{
	CColonne controle;
	int ySommet;

	public PColonne(CColonne cColonne) {
		controle=cColonne;
		PCarte carte=new PCarte();
		this.empiler(carte);
		ySommet=0;
		setLayout(null);
		Dimension dim=new Dimension(carte.getWidth()+5,21*25);
		setPreferredSize(dim);
		setBackground(new Color(46, 139, 87));
	}

	@Override
	public void depiler() {
		try {
			this.remove((PCarte)((CCarte) controle.getSommet()).getPresentation());
			ySommet=ySommet-25;
			repaint();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	@Override
	public void empiler(IPCarte carte) {
		this.add((PCarte) carte,0);
		System.out.println(ySommet);
		((PCarte)carte).setLocation(0,ySommet);
		System.out.println("j'empile");
		ySommet=ySommet+25;
		repaint();
	}
	
	@Override
	public PCarte getBase() {
		// TODO Auto-generated method stub
		PCarte carte=null;
		try {
			carte= (PCarte) ((CCarte) controle.getBase()).getPresentation();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return carte;
	}

	@Override
	public PCarte getCarte(int n) {
		PCarte carte=null;
		try {
			carte= (PCarte) ((CCarte) controle.getCarte(n)).getPresentation();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return carte;
	}
	
	public void setReserve(ICTas tas)
	{	
		for(int i=tas.getNombre(); i>1; i--){
			try {
				PCarte carte=(PCarte) ((CCarte)((TasDeCartes) tas).getCarte(i)).getPresentation();
				empiler(carte);
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		ySommet=ySommet+25;
	}

	@Override
	public PCarte getSommet() {
		try {
			return (PCarte) ((CCarte) controle.getSommet()).getPresentation();
		} catch (Exception e) {
			System.out.println(controle.getNom());
			//e.printStackTrace();
			return null;
		}
	}

	@Override
	public int getNombre() {
		return this.controle.getNombre();
	}
	
	public void retournerCarte()
	{
		System.out.println(ySommet);
		ySommet-=25;
		//empiler(getSommet());
	}
	
}
